独習PHP:第2章 PHPの基本
第2章 PHPの基本
データの宣言
することで、データを格納するための場所がメモリに確保されるようになる
phpは宣言不要なので、コードで値を格納したタイミングで場所がメモリ上に確保される
命名規則
code:php
// 英数字と、アンダースコアが基本
// 先頭が任意の文字もしくはアンダースコアであること
$data, $_name
// 2文字目以降なら数字を使用しても良い
$data1, $_name11
PHPにおける各記法の使い分け
キャメルケース記法 $userName
変数、関数名に使う
パスカル記法 $UserName
クラス名に使う
アンダースコア記法 $user_name
大文字として、定数で使う。$ADMIN_USER_NAME
可変変数
変数名を変数の値によって決めることができる
変数の値に応じて、動的に変数名を付け替えられるようになる
code:php
$x = "title";
$title = 'PHP dayo';
print $$x;
// PHP dayoと出力される
// print ${$x}; でもOK
定数
先頭に$はつけない
利用できる型はint, float, string, bool, nullなど限定されている
define関数との違い
code:php
# 同じ
const TAX = 1.1;
define ('TAX', 1.1);
# constでは変数を格納することができない
const NUMBER = $x; //エラー
define('NUMBER', $x); //通る
定義済みの定数
__FILE__, __DIR__とか、PHP側が既に格納している定数を示す
データ型
PHPは変数が中身に応じて自動的に形を変える動的型付け言語
スカラー型
1つの変数で1つの値だけを扱える型のこと
bool, int, float, double, string
複合型
1つの変数で複数の値を表す型
array, object, callable
特殊型
外部リソースを参照する、上二つに分類できない特殊な値を表す型
null, resource
リテラル
変数に格納できる値そのもののこと。boolなら論理リテラル、intなら整数リテラルが入る。
数値セパレータ(PHP7.4以降)
$separate = 1_234_567;
_で数値リテラルを区切れるようになった。可読性を上げることができる
エスケープ処理
code:php
// バックスラッシュを使う バックスラッシュをエスケープしたいなら\\でいい
print 'He\'s "great" teacher!';
エスケープシーケンス
\n, \rとか。タブや改行など、特殊な意味を持つ文字のこと
'と"どちらで文字列リテラルを括る?
code:php
$title = 'サーバーサイドの学びや';
$data1 = "サポートサイト\t「{$title}」へ";
$data2 = 'サポートサイト\t「{$title}」へ';
print $data1; // サポートサイト 「サーバーサイドの学びや」へ
print $data2; // サポートサイト\t「{$title}」へ
ダブルクォートの特徴
変数展開 / 変数をパースしてくれる
文字列に含まれる変数を解釈し、その値に置き換えてくれる
{$num}という形で、どこまで変数であるのか明確にしてから使う
$data1 = "「 $title 」"と言うように空白を入れると波括弧省略ができるが使わない
エスケープシーケンスを使うことができる
文字列リテラルだけの時はシングルクォート'を使用して
パース、エスケープシーケンスを使うときはダブルクォート"を使用するのが好ましい。
ヒアドキュメント
長い文字列を格納できる
code:php
$text = <<<EOD
PHPはサーバーサイドの言語です。
まずは本書から学んでみましょう。
EOD;
配列
データのpush: $array[] = 100;は末尾に入る
連想配列: 数値キーの代わりに文字列キーで要素を管理すること
多次元配列: 配列に配列を入れること
code:php
$data1 = [
];
// laravelでcollectionとかでよく使ってる
通常の配列と連想配列の違い
PHPは区別せず、同じ扱いをする
キーが数値であるか文字列であるかの違い
混在させて連想配列とすることもできる
$data = [ 1 => 'あああ', '文字キー' => 'aaa'];
型の相互変換
暗黙的な変換
$str = 'aaa'を、ifの条件で使うとtrueとして読み変えたりする変換が有名
明示的な変換 (キャスト)
code:php
// (データ型)値で定義できる
$num = (string)100;
echo $num . PHP_EOL;
var_dump($num); // string(3) "100